﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Windows;
using System.Windows.Forms;


namespace WebApplication1.Comptes
{
    public partial class EnregistrerMenage : System.Web.UI.Page
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ButtonSubmit_Click(object sender, EventArgs e)
        {

            using (SqlConnection con = new SqlConnection("server=FORMA1614;Database=magicrecettes;User ID=magicrecettes;Password=cook;Trusted_Connection=False"))
            {
                string[] valeurs = new string[] { TextBoxLogin.Text, TextBoxPassword.Text, TextBoxNom.Text, 
                                                    TextBoxPrenom.Text, TextBoxMail.Text, TextBoxNbPersonnes.Text, };
                if (verificationValeurs(valeurs))
                {
                    con.Open();
                    string insertQuery = "INSERT INTO Menage(login, passwd, email, nom, prenom, nb_personnes) VALUES(@LOGIN, @MOTDEPASSE, @EMAIL, @NOM , @PRENOM , @NBPERSONNES)";
                    using (SqlCommand cmd = new SqlCommand(insertQuery, con))
                    {
                        // création et affectation des paramètres
                        SqlParameter p1 = new SqlParameter("@LOGIN", SqlDbType.VarChar, 50);
                        p1.Value = TextBoxLogin.Text;
                        cmd.Parameters.Add(p1);

                        SqlParameter p2 = new SqlParameter("@EMAIL", SqlDbType.VarChar, 50);
                        p2.Value = TextBoxMail.Text;
                        cmd.Parameters.Add(p2);

                        SqlParameter p3 = new SqlParameter("@MOTDEPASSE", SqlDbType.VarChar, 50);
                        p3.Value = TextBoxPassword .Text;
                        cmd.Parameters.Add(p3);

                        SqlParameter p4 = new SqlParameter("@NOM", SqlDbType.VarChar, 50);
                        p4.Value = TextBoxNom.Text;
                        cmd.Parameters.Add(p4);

                        SqlParameter p5 = new SqlParameter("@PRENOM", SqlDbType.VarChar, 50);
                        p5.Value = TextBoxPrenom.Text;
                        cmd.Parameters.Add(p5);

                        SqlParameter p6 = new SqlParameter("@NBPERSONNES", SqlDbType.Int);
                        p6.Value = Int32.Parse(TextBoxNbPersonnes.Text);
                        cmd.Parameters.Add(p6);

                       
                        try{
                            Int32 NbLignesAffectees = cmd.ExecuteNonQuery();

                            //if (NbLignesAffectees == 1)
                            //{
                            //    labelResultat.Text = "Insertion OK";
                            //}
                            //else
                            //{
                            //    labelResultat.Text = "Insertion KO";
                            //}
                            // Plus élégant:
                            labelResultat.Text = "Insertion" + (NbLignesAffectees == 1 ? "OK" : "KO");

                            // Mettre le Ménage créé en session
                            Session["login"] = TextBoxLogin.Text;
                            Session["nom"] = TextBoxNom.Text;
                            Session["prenom"] = TextBoxPrenom.Text;
                            Session["email"] = TextBoxMail.Text;
                            Session["nb_personnes"] = TextBoxNbPersonnes.Text;

                            // Rediriger vers la page de bienvenue
                            Response.Redirect("~/Bienvenue.aspx");
                            
                        }
                        catch(SqlException exc){
                            Console.Write(exc.ToString());
                        }
                    }
                }
                // todo - fenêtre d'erreur
                else Console.WriteLine("Remplissez tous les champs");
            }


            // con.Close();  -- n'est plus nécessaire grâce au bloc USING
        }

        /*
         * Retourne TRUE si toutes les valeurs du tableau sont des string non-vides;
         * FALSE sinon
         */
        private Boolean verificationValeurs(string[] tabValeurs)
        {
             foreach (string valeur in tabValeurs){
                if (valeur == String.Empty)
                {
                    return false;
                }
            }
            return true;
        }
    }
}